package mx.com.switz.dao.impl;

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.jdbc.core.namedparam.SqlParameterSource;
import org.springframework.jdbc.core.simple.SimpleJdbcInsert;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
import org.springframework.stereotype.Repository;

import mx.com.switz.dao.EstudianteDao;
import mx.com.switz.dto.Estudiante;
@Repository
public class EstudianteDaoImpl extends JdbcDaoSupport implements EstudianteDao {
	
	private NamedParameterJdbcTemplate namedParameterJdbcTemplate;

	private JdbcTemplate jdbcTemplate;
	private SimpleJdbcInsert simpleJdbcInsert;
	
	private static final String SQL_INSERTA_ESTUDIANTE = "INSERT INTO ESTUDIANTE (noCtrl, idCarrera, nombre, aPaterno, aMaterno, sexo, fechaNac, fechaInsc, curp) values (:noCtrl, :idCarrera, :nombre, :aPaterno, :aMaterno, :sexo, :fechaNac, now(), :curp)";
	
	@Autowired
	public EstudianteDaoImpl(DataSource dataSource) {
		setDataSource(dataSource);
		

		//this.jdbcTemplate = new JdbcTemplate(dataSource);
		this.namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource);
	//	this.simpleJdbcInsert=new SimpleJdbcInsert(dataSource);
		
	}
		

	@Override
	public void insertEstudiante(Estudiante estudiante) {
		
		 SimpleJdbcInsert simpleJdbcInsert = new SimpleJdbcInsert(getDataSource())
	               .withTableName("estudiante");
		
	           SqlParameterSource parameters = new BeanPropertySqlParameterSource(estudiante);
	           simpleJdbcInsert.execute(parameters);
		
		/*
		SqlParameterSource parameterSource = new BeanPropertySqlParameterSource(estudiante);
		this.namedParameterJdbcTemplate.update(SQL_INSERTA_ESTUDIANTE, parameterSource);
		*/
	}
	@Override
	public int contadorEstudiantes(){
		String sql = "SELECT count(*) FROM ESTUDIANTE";

		return this.jdbcTemplate.queryForInt(sql);
		
	}


}
